package com.tgr.shortLink.admin.remote;

import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.TypeReference;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.tgr.shortLink.admin.common.context.BaseContext;
import com.tgr.shortLink.admin.common.convention.result.Result;
import com.tgr.shortLink.admin.remote.dto.req.RecycleBinRecoverReqDTO;
import com.tgr.shortLink.admin.remote.dto.req.*;
import com.tgr.shortLink.admin.remote.dto.resp.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 描述：短链接中台远程调用服务
 * 作者：小陶不慌张
 * 文件：ShortLinkRemoteService
 * 日期：2024/1/17 16:54
 */

public interface ShortLinkRemoteService {

//    /**
//     * 短链接远程调用创建短链接功能
//     * @param requestParam
//     * @return
//     */
//    default Result<LinkCreateRespDTO> createLink(LinkCreateReqDTO requestParam){
//        String resultCreateStr=HttpUtil.post("http://127.0.0.1:8001/api/short-link/link/v1/create",JSON.toJSONString(requestParam));
//        return JSON.parseObject(resultCreateStr, new TypeReference<Result<LinkCreateRespDTO>>() {
//        });
//    }

//    /**
//     * 短链接远程调用分页服务
//     * @param requestParam
//     * @return
//     */
//    default Result<IPage<LinkPageRespDTO>> pageLink(LinkPageReqDTO requestParam){
//        // 创建请求头参数
//        Map<String, Object> requestMap =new HashMap<>();
//        requestMap.put("gid", requestParam.getGid());
//        requestMap.put("current",requestParam.getCurrent());
//        requestMap.put("size",requestParam.getSize());
//        requestMap.put("token", BaseContext.getToken());
//        requestMap.put("username", BaseContext.getUsername());
//
//        String resultPageStr = HttpUtil.get("http://127.0.0.1:8001/api/short-link/link/v1/page",requestMap);
//        return JSON.parseObject(resultPageStr, new TypeReference<>(){});
//    }
//    /**
//     * 短链接远程调用查询分组内短链接个数
//     */
//    default Result<List<LinkGroupQueryRespDTO>> linkCountQuery(List<String> requestParam){
//        Map<String,Object> requestMap = new HashMap<String,Object>();
//        requestMap.put("gid",requestParam);
//        requestMap.put("token", BaseContext.getToken());
//        requestMap.put("username", BaseContext.getUsername());
//        String resultCountStr = HttpUtil.get("http://127.0.0.1:8001/api/short-link/link/v1/count",requestMap);
//        return JSON.parseObject(resultCountStr, new TypeReference<Result<List<LinkGroupQueryRespDTO>>>() {});
//    }

//    /**
//     * 短链接远程调用修改短链接功能
//     */
//    default void updateLink(@RequestBody LinkUpdateReqDTO requestParam){
//        String resultUpdateStr=HttpUtil.post("http://127.0.0.1:8001/api/short-link/link/v1/update",JSON.toJSONString(requestParam));
//
//    }

//    default Result<String> getLinkTitle(String url){
//        String resultPageStr = HttpUtil.get("http://127.0.0.1:8001/api/short-link/link/v1/title?url="+url);
//        return JSON.parseObject(resultPageStr, new TypeReference<>(){});
//    }


//    default void saveBin(@RequestBody RecycleBinSaveReqDTO requestParam){
//        HttpUtil.post("http://127.0.0.1:8001/api/short-link/admin/v1/recycle-bin/save",JSON.toJSONString(requestParam));
//
//    }
//    default Result<IPage<RecycleBinPageRespDTO>> pageBin(RecycleBinPageReqDTO requestParam){
//        // 创建请求头参数
//        Map<String, Object> requestMap =new HashMap<>();
//        requestMap.put("gid", requestParam.getGid());
//        requestMap.put("current",requestParam.getCurrent());
//        requestMap.put("size",requestParam.getSize());
//        requestMap.put("token", BaseContext.getToken());
//        requestMap.put("username", BaseContext.getUsername());
//
//        String resultPageStr = HttpUtil.get("http://127.0.0.1:8001/api/short-link/admin/v1/recycle-bin/page",requestMap);
//        return JSON.parseObject(resultPageStr, new TypeReference<>(){});
//    }

//    default void recoverBin(RecycleBinRecoverReqDTO requestParam){
//        HttpUtil.post("http://127.0.0.1:8001/api/short-link/admin/v1/recycle-bin/recover",JSON.toJSONString(requestParam));
//    }

//    default void removeBin(RecycleBinRemoveReqDTO requestParam){
//        HttpUtil.post("http://127.0.0.1:8001/api/short-link/admin/v1/recycle-bin/remove",JSON.toJSONString(requestParam));
//    }

//    default Result<LinkStatsRespDTO> oneShortLinkStats(
//                                    @RequestParam("fullShortUrl") String fullShortUrl,
//                                   @RequestParam("gid") String gid,
//                                   @RequestParam("startDate") String startDate,
//                                   @RequestParam("endDate") String endDate){
//        // 创建请求头参数
//        Map<String, Object> requestMap =new HashMap<>();
//        requestMap.put("gid", gid);
//        requestMap.put("fullShortUrl",fullShortUrl);
//        requestMap.put("startDate",startDate);
//        requestMap.put("endDate",endDate);
//
//        String resultPageStr = HttpUtil.get("http://127.0.0.1:8001/api/short-link/v1/stats",requestMap);
//        return JSON.parseObject(resultPageStr, new TypeReference<>(){});
//    }
//
//    default Result<IPage<LinkStatsAccessRecordRespDTO>> linkStatsAccessRecord(LinkStatsAccessRecordReqDTO requestParam){
//        Map<String, Object> requestMap =new HashMap<>();
//        requestMap.put("gid", requestParam.getGid());
//        requestMap.put("fullShortUrl",requestParam.getFullShortUrl());
//        requestMap.put("startDate",requestParam.getStartDate());
//        requestMap.put("endDate",requestParam.getEndDate());
//        requestMap.put("current",requestParam.getCurrent());
//        requestMap.put("size",requestParam.getSize());
//        requestMap.put("token", BaseContext.getToken());
//        requestMap.put("username", BaseContext.getUsername());
//
//        String resultPageStr = HttpUtil.get("http://127.0.0.1:8001/api/short-link/v1/stats/access-record",requestMap);
//        return JSON.parseObject(resultPageStr, new TypeReference<Result<IPage<LinkStatsAccessRecordRespDTO>>>(){});
//
//    }
}
